package me.yushuai.wukong.base.api.request;

import me.yushuai.wukong.base.api.dto.LocationTurnover;
import me.yushuai.wukong.base.api.dto.LocationUsage;
import org.hibernate.annotations.Type;

import javax.persistence.Enumerated;
import java.math.BigDecimal;

/**
 * 新建库位的请求信息
 *
 * @author zhoushuai@189.cn
 * @since 2023-03-28
 */
public class CreateLocRequest {

    /**
     * 库位编码
     */
    private String bizId;

    /**
     * 逻辑顺序
     */
    private Long logicalSequence;

    /**
     * 设施编号
     */
    private String facilityId;

    /**
     * 状态
     */
    private String status;

    /**
     * 库位使用方式
     * <ul>
     *     <li>无</li>
     *     <li>存储库位</li>
     *     <li>箱拣货库位</li>
     *     <li>件拣货库位</li>
     *     <li>箱/件合并拣货库位</li>
     *     <li>过渡库位</li>
     *     <li>理货站</li>
     *     <li>组装工作区</li>
     *     <li>播种库位</li>
     *     <li>快拣补货位</li>
     *     <li>补充拣货位</li>
     * </ul>
     */
    @Enumerated
    private LocationUsage usage;

    /**
     * 库位属性
     * <ul>
     *     <li>无</li>
     *     <li>正常</li>
     *     <li>封存</li>
     *     <li>管控</li>
     *     <li>紧入</li>
     * </ul>
     */
//    private LocationAttribute locationAttribute;

    /**
     * 库位类型
     * 无、货架、地面平仓、重力式货架、窄巷道货架、已拣货库位
     */
    private String category;

    /**
     * 库位处理
     * <p>
     * 无、其他、仅限与托盘、仅限于箱
     */
    private String locationHandling;

    /**
     * 体积限制
     */
    private BigDecimal cubicCapacity;

    /**
     * 重量限制
     */
    private BigDecimal weightCapacity;

    /**
     * 数量限制
     */
    private Integer countCapacity;

    /**
     * 托盘数量限制
     */
    private Integer palletQtyMaxLimit;

    /**
     * 上架区关联库区
     */
    private Long putAwayZoneId;

    /**
     * 拣货区关联库区
     */
    private Long pickZoneId;

    /**
     * 库位组1
     */
    private Long locGroup1Id;

    /**
     * 库位组
     */
    private Long locGroup2Id;

    /**
     * 长度
     */
    private BigDecimal length;

    /**
     * 宽度
     */
    private BigDecimal width;

    /**
     * 高度
     */
    private BigDecimal height;

    /**
     * 层数
     */
    private Integer locLevel;

    /**
     * 环境
     */
    private String environment;

    /**
     * 周转需求， 无、快速周转、中速周转、慢速周转
     */
    @Enumerated
    private LocationTurnover demand;

    /**
     * 是否允许混放产品
     */
    @Type(type = "yes_no")
    private Boolean mixFlag;

    /**
     * 是否允许混放批次
     */
    @Type(type = "yes_no")
    private Boolean mixLotFlag;

    /**
     * 是否忽略ID
     */
    @Type(type = "yes_no")
    private Boolean loseIdFlag;

    /**
     * 拣货顺序
     */
    private String pickLogicalSequence;

    /**
     * X坐标
     */
    private Integer xCoord;

    /**
     * Y坐标
     */
    private Integer yCoord;

    /**
     * Z坐标
     */
    private Integer zCoord;

    /**
     * 箱数最大限制
     */
    private Integer boxQtyMaxLimit;

    /**
     * X像素
     */
    private Integer xDistance;

    /**
     * Y像素
     */
    private Integer yDistance;

    /**
     * 校验码条码
     */
    private String barcode;

    /**
     * 工作区域
     */
    private Long workingAreaId;

    /**
     * WCS端口号1
     */
    private String wcsAddress1;

    /**
     * WCS端口号2
     */
    private String wcsAddress2;

    /**
     * 端口号
     */
    private String terminalNo;

    /**
     * SKU数的最大限制
     * 允许存放的SKU的最大数量
     */
    private Integer skuQtyMaxCount;

    /**
     * ASRS 巷道号
     */
    private String aisleNo;

    /**
     * 冻结状态
     */
    private Boolean frozen;


}
